home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr49 / pgp23src.zip / 68000.S < prev    next >
Text File  |  1993-05-09  |  2KB  |  90 lines

  1. ; This is the assembler source code for amiga 68000
  2. ; It assumes Lattice-C is used. (v5.04 or higher)
  3. ; Written by S. Fishman
  4.  
  5.     SECTION text
  6.  
  7.     XREF    _global_precision
  8.     XDEF    _P_ADDC        ;make the linker know we're here
  9.  
  10. _P_ADDC:    link    a6,#0
  11.     movem.l    d4-d5/a0-a1,-(a7)    
  12.     move.l    8(a6),a0    
  13.     move.l    12(a6),a1    
  14.     move.l    16(a6),d4
  15.     sne    d4        
  16.     moveq.l    #0,d5
  17.     move.w    _global_precision,d5
  18.     asl.l    #2,d5        
  19.     add.l    d5,a0    
  20.     add.l    d5,a1
  21.     asr.l    #2,d5        
  22.     sub.l    #1,d5    
  23.     asr.b    #1,d4    
  24. add_loop:    addx.l    -(a1),-(a0)    
  25.     dbra    d5,add_loop
  26.     scs    d0        
  27.     ext.w    d0
  28.     ext.l    d0        
  29.     movem.l    (a7)+,d4-d5/a0-a1    
  30.     unlk    a6        ;get A6 & A7 back
  31.     rts
  32.  
  33.     XDEF    _P_SUBB        
  34.  
  35. _P_SUBB:    link    a6,#0
  36.     movem.l    d4-d5/a0-a1,-(a7)    
  37.     move.l    8(a6),a0    
  38.     move.l    12(a6),a1    
  39.     move.l    16(a6),d4
  40.     sne    d4        ;fix old borrow bits
  41.     moveq.l    #0,d5
  42.     move.w    _global_precision,d5
  43.     asl.l    #2,d5    
  44.     add.l    d5,a0
  45.     add.l    d5,a1        
  46.     asr.l    #2,d5    
  47.     sub.l    #1,d5
  48.     asr.b    #1,d4        
  49. sub_loop:    subx.l    -(a1),-(a0)    ;come'n, let's do it !!!
  50.     dbra    d5,sub_loop
  51.     scs    d0        
  52.     ext.w    d0
  53.     ext.l    d0        
  54.     movem.l    (a7)+,d4-d5/a0-a1    
  55.     unlk    a6    
  56.     rts
  57.  
  58.     XDEF    _P_ROTL        
  59.  
  60. _P_ROTL:    link    a6,#0    
  61.     movem.l    d4-d5/a0,-(a7)
  62.     move.l    8(a6),a0    
  63.     move.l    12(a6),d4
  64.     moveq.l    #0,d5
  65.     move.w    _global_precision,d5
  66.     asl.l    #1,d5        
  67.                 
  68.     sub.l    #2,d5    
  69.     asl    (a0)+
  70.     scs    d0        
  71.     ext.w    d0
  72.     ext.l    d0        
  73. rotl_loop:    asl    (a0)+
  74.     bcc    rotl_no_carry
  75.     bset    #0,-3(a0)    
  76. rotl_no_carry:    dbra    d5,rotl_loop    
  77.     tst.l    d4        
  78.     beq    rotl_no_old_carry
  79.     bset    #0,-1(a0)    
  80. rotl_no_old_carry:
  81.     movem.l    (a7)+,d4-d5/a0    
  82.     unlk    a6        
  83.     rts
  84.  
  85.    XDEF     _P_SETP    
  86.  
  87. _P_SETP: rts
  88.     END
  89.  
  90.